Skip to content

Upgrade to Expo SDK 55#48

Merged
sugarshin merged 2 commits into
mainfrom
update-expo
Apr 29, 2026
Merged

Upgrade to Expo SDK 55#48
sugarshin merged 2 commits into
mainfrom
update-expo

Conversation

@sugarshin
Copy link
Copy Markdown
Owner

Summary

  • Bump `expo` to `~55.0.18` and align all SDK-managed peers via `expo install --fix` — `react` → 19.2.0, `react-native` → 0.83.6, `expo-*` → 55.x line, `eslint-config-expo` → 55.0.0, plus `react-native-gesture-handler` / `-reanimated` / `-screens` / `@types/react` peers that RN 0.83 requires.
  • Register `expo-sharing` as a config plugin in `packages/app/app.json` — required by the SDK 55 plugin contract; `expo install --fix` added it automatically.
  • Slide `renovate.json` `allowedVersions` ceilings to the SDK 55 line so Renovate keeps offering within-SDK patches but stops surfacing SDK-coupled majors. Add `eslint-config-expo` to the same pin group as `expo` / `@expo` so it can't drift independently again (this is what created PRs Update dependency eslint to v10 #35 and Update dependency eslint-config-expo to v55 - autoclosed #36 in the first place).
  • Update the `Expo SDK 54` reference in `CLAUDE.md`.

This unblocks the ESLint v10 update path indirectly: ESLint 10 still needs `eslint-plugin-react` to ship its v10 fix (jsx-eslint/eslint-plugin-react#3979), but at least `eslint-config-expo` is now on the SDK-current major.

Background

Renovate offered `eslint-config-expo@55` (#36) and `eslint@10` (#35) standalone, but neither could merge — `eslint-config-expo@55` failed the `expo install --check` gate (SDK 54 expects `~10.0.0`), and `eslint@10` blew up at lint time because `eslint-plugin-react@7.37.5` still calls `context.getFilename()` (removed in ESLint 10). The clean way out is to bump the Expo SDK itself, which this PR does.

Test plan

CI-equivalent checks all green locally:

  • `pnpm --filter @seam/app exec expo install --check` (EXPO_OFFLINE=1)
  • `pnpm format:check`
  • `pnpm -r lint`
  • `pnpm -r typecheck`
  • `pnpm -r test` — 198 tests passed across `shared` / `domain` / `app`
  • `pnpm --filter @seam/app exec expo export --platform ios` — Metro bundle 5.7 MB

Pending verification (local-only — CI can't run iOS simulator)

  • `cd packages/app && pnpm prebuild` — regenerate `ios/` against SDK 55 / RN 0.83
  • `pnpm ios` — boot in simulator, exercise tabs (Home / Closet / Wishlist / Compare / Stats / Settings), item & candidate CRUD, photo pick, notification reminder, JSON / CSV export+import, data reset
  • `maestro test .maestro/` — full E2E flow

Follow-ups

🤖 Generated with Claude Code

Bump expo to ~55.0.18 and run `expo install --fix` to align all
SDK-managed peers (react 19.2.0, react-native 0.83.6, expo-* 55.x,
eslint-config-expo 55.0.0, plus the gesture-handler / reanimated /
screens / @types/react peers RN 0.83 requires).

`expo-sharing` is registered as a config plugin in app.json — required
in SDK 55.

renovate.json's allowedVersions ceilings are slid to the SDK 55 line so
Renovate keeps surfacing patch updates within-SDK and stops offering
the SDK-coupled majors (eslint-config-expo is now in the same pin
group as expo / @expo).
`react-native-reanimated@4` no longer bundles its worklets runtime;
since SDK 55 it ships as a separate `react-native-worklets` package
(found by `pod install` failing with `[Reanimated] Failed to validate
worklets version` against expo-modules-core's RNReanimated.podspec).

Pin to 0.7.x via renovate.json so it tracks the Expo SDK 55 line and
won't drift independently.
@sugarshin sugarshin merged commit 894850c into main Apr 29, 2026
1 check passed
@sugarshin sugarshin deleted the update-expo branch April 29, 2026 02:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant